אז.. לאלה שיודעים, ובמיוחד לאלה שלא, לא רק ל - WordPress יש תוספים, תכירו את אפשרות התוספים ל - Yii FrameWork.
בזמן האחרון לא יצא לי לכתוב לכם מדריך, היום היה לי תחושה טובה לגבי כתיבת מדריך Yii;
אז קבלו את המדריך הבא שלי ל - Yii FrameWork - "איפה אפשר למצוא תוספים, ואיך לעבוד איתם?".
אז.. לאלה שיודעים, ובמיוחד לאלה שלא, לא רק ל - WordPress יש תוספים, תכירו את אפשרות התוספים ל - Yii FrameWork.
ישנם אלפי תוספים ל - Yii FrameWork, חלקם פשוטים מאוד לתפעול וחלקם בדיוק ההפך.
היום אנחנו נקח לדוגמה את התוסף ELangUrlManager, התוסף מאוד שימושי ויעיל כמעט לכל אתר הבנוי מ - Yii FrameWork ההולך להיות בין-לאומי;
התוסף בעצם נותן אפשרות למשתמש לבחור את שפתו(ע"פ רשימת השפות שנקבעה), ולשנות בעצם את כל האתר לשפה שנבחרה; לנו, המתכנתים - ישנה אפשרות להוסיף שפות ע"י שינוי שורה בקובץ ה - Config הראשי, וקביעת טקסט לכל שפה.
אז.. איך מתקינים תוסף?
ראשית, נפתח את קובץ ה - Config שלנו, ונוסיף את השורה הבאה:
Protected/Config/Config.php
'import' => array
(
'application.controllers.*',
'application.models.*',
'application.components.*'
),
(
'application.controllers.*',
'application.models.*',
'application.components.*'
),
במדריכים הקודמים למדנו, שבמערך 'import' אנחנו מעלים לקוד תקיות שלכל אחת מהם תפקיד משלה;
לדוגמה נקח את תקיית ה - 'Controllers', שבה בעצם יש לנו את כל הקונטרולרים באתר, בניגוד לכך, 'models' נותנת לנו להעלות מודלים של טפסים, וטבלאות מסדי נתונים.
היום נלמד על 'import' חדש, אחד בשם 'components' שפרושו 'רכיבים';
חוץ מתוספים יש אפשרות להעלות לשם עוד דברים - לא נדבר עליהם במדריך זה.
לשם בעצם אנחנו מעלים את התוספים שלנו, בואו נוריד את התוסף שלנו ELangUrlManager מכאן:
http://www.yiiframework.com/extension/elangurlmanager
(בצד ימין יש קטגוריית "Downloads" שפרושה 'הורדות', שם תוכלו להוריד את הגרסאות החדשות, ובין היתר גם הישנות של התוסף).
[חוץ מהתוסף הספציפי הזה, אנחנו יכולים לראות ולחפש עוד תוספים כאן:
http://www.yiiframework.com/extension]
אוקיי, הורדנו את ה - Zip של התוסף, בתוך ה - Zip יש לנו את הקובץ ELangUrlManager.php, אותו אנחנו נעלה לתקייה components - לאחר שהוספנו את התקייה ב - Config(כנ"ל).
בכדי ש - Yii ידע שאנחנו רוצים להעלות את התוסף על האתר שלנו, נצטרך להגדיר את התוסף ב - Config;
לכל תוסף יש דרך הגדרה משלו, ע"פ המחלקה שהוא אמור לשלוף ממנה בכדי לקבל ולהעביר נתונים, בכל דף של תוסף ב - Yii FrameWork, יש הסבר על התקנת התוסף, במקרה שלנו אנחנו צריכים להשתמש עם המחלקה urlManager של Yii FrameWork, ולכן נגדיר את התוסף בצורה הבאה ב - Config:
Protected/Config/Config.php
'components' => array
(
'urlManager' => array
(
'class' => 'ELangUrlManager',
'languages' => array('en' => 'English', 'he' => 'Hebrew'),
'cookieDays' => 10,
'urlFormat' => 'path',
'showScriptName' => false,
'rules' => array('<controller:\w+>/<id:\d+>'=>'<controller>/view')
)
)
(
'urlManager' => array
(
'class' => 'ELangUrlManager',
'languages' => array('en' => 'English', 'he' => 'Hebrew'),
'cookieDays' => 10,
'urlFormat' => 'path',
'showScriptName' => false,
'rules' => array('<controller:\w+>/<id:\d+>'=>'<controller>/view')
)
)
(שימו לב ששמתי את זה בתוך המערך 'components', שמכיל את התוספים והמחלקות במערכת).
קבענו ב - 'components' שכרגע אנחנו רוצים להשתמש להוסיף ולשנות את המחלקה urlManager של - Yii FrameWork ע"י כך שקראנו למערך 'urlManager'.
ב - 'class' שפרושו 'מחלקה', שם הגדרנו את שם התוסף ממנו אנחנו רוצים לקבל ולהחזיר נתונים ל - 'urlManager';
לאחר מכן הגדרנו את השפות בהם אנחנו רוצים להשתמש, במקרה שלנו: עברית ואנגלית(שימו לב, שם השפה[לדוגמה en], צריכה להיות ע"פ רשימת השפות כאן: http://www.inmotionhosting.com/support/website/php/language-code-list).
ב - 'cookieDays' אנחנו מגדירים את זמן שמירת העוגיה של השפה שהמשתמש בחר.
ב - 'rules' קבענו את החוקים ב - htaccess שעל-פיהם ה - url מכוון בכדי לגשת לשפה, לדוגמה אנחנו רוצים לגשת לדף 'Home' בקונטרולר 'Main' בשפה 'en', אנחנו נצטרך להקליד את הכתובת הזו: http://www.YourDomain.com/en/Main/Home.
שימוש בתוסף
לאחר שהגדרנו והתקננו את התוסף, נלמד להשתמש בו.
לדוגמה: ברצוני לכתוב באתר טקסט, שבעברית יהיה "שלום עולם!" ובאנגלית יהיה "Hello World!";
למעשה זה פשוט מאוד, משתמשים במערך שעושה את הכל:
Protected/Controllers/MainController.php
$text = array('en'=>'Hello World!', 'he'=>'שלום עולם!');
echo $text[Yii::app()->getLanguage()];
echo $text[Yii::app()->getLanguage()];
המערך מכיל את הטקסט באנגלית ובעברית, אנחנו מדפיסים את הטקסט ע"י שליפה מהמערך, שלוקח את שם השפה מהפונקציה getLanguage.
בהצלחה (:
תגובות לכתבה:
מגניב :) עכשיו אפשר לעשות את phpguide בין לאומי
למה לא להשתמש ב-Yii:t שמובנה כבר במערכת?
http://www.yiiframework.com/doc/api/1.1/YiiBase#t-detail
יש הבדל בינהם, Yii:t משנה את שפת הפריימוורק בלבד, כלומר שגיאות ושמות בעברית, אך לקבוע טקסט שמשתנה בהתאם לשפה, זה כבר התוסף הזה.
קראת את כל הפרמטרים שצירפתי בלינק?
זה בדיוק מה שהוא עושה. אתה כותב פעם אחת באנגלית את הכל, ואז עושה יצא לקובץ תרגום (מערך PHP, GetText או DB). וזהו. הכל מנוהל משמה.
זה גם לא הגיוני איך שאתה עובד. כל פעם שארצה לרשום טקסט לשני השפות (או ה-100 שפות?), אני אצטרך לבנות כזה מערך מטופש בקוד שלי?
קשה לי לקבל את זה.
לפי מה שזה נראה:
yii:t מיועד לתגרום מחרוזות.
eLangUrlManager מנהל כתובות, לוקח משם את אלמנט השפה site.com/en/bla, שומר את זה פר משתמש בקוקי ודואג ש yii:t תבחר בשפה הנכונה.
@intval, אני לא מדבר על התוסף. אני מדבר על דוגמת הקוד האחרונה שהוצגה כאן. זה פשוט טעות חמורה לכתוב כזה קוד.
אני מקווה שאריאל יתקן את זה
@KingYes, יש לך דוגמת קוד אחרת?
http://www.yiiframework.com/doc/guide/1.1/en/topics.i18n